home *** CD-ROM | disk | FTP | other *** search
-
-
- Cmerge V1.0 Mon Jun 08 14:31:24 1987 Page 1-1
-
- .186
- name sieve
- 0000 _text segment byte public 'code'
- dgroup group _data,_bss
- assume cs:_text,ds:dgroup,ss:dgroup
- 0000 _text ends
- 0000 _data segment word public 'data'
- 0000 _d@ label byte
- 0000 _data ends
- 0000 _bss segment word public 'bss'
- 0000 _b@ label byte
- 0000 _bss ends
- 0000 _data segment word public 'data'
- public _flags
- 0000 _flags label byte
- 0000 00 db 0
- 0001 1FFE[ db 8190 dup (?)
- ??
- ]
-
- 1FFF _data ends
- 0000 _text segment byte public 'code'
- ;|***
- ;|*** /* Eratosthenes Sieve Prime Number Program in C, Byte January 1983.
- ;|*** * The code has been corrected to produce primes correctly.
- ;|*** */
- ;|*** #include <stdio.h>
- ;|***
- ;|*** #define TRUE 1
- ;|*** #define FALSE 0
- ;|*** #define NITER 150
- ;|*** #define SIZE 8190
- ;|***
- ;|*** char flags[SIZE+1]={0};
- ;|***
- ;|***
- ;|*** main ()
- ;|*** {
- ; Line 16
- 0000 _main proc near
- 0000 56 push si
- 0001 57 push di
- 0002 C8 0004 00 enter 4,0
- ;|*** register int i,k;
- ; Line 17
- ;|*** int iter, count;
- ; Line 18
- ;|***
- ; Line 19
- ;|*** printf ("%d iterations: ", NITER);
- ; Line 20
- 0006 68 db 104 ; push immediate
- 0007 0096 dw 150
- 0009 B8 1FFF R mov ax,offset _s@
- 000C 50 push ax
- 000D E8 0000 E call near ptr _printf
- 0010 83 C4 04 add sp,4
- ;|***
- ; Line 21
- Cmerge V1.0 Mon Jun 08 14:31:25 1987 Page 1-2
- ;|*** for( iter = 1; iter <= NITER; iter++ ) /* Do sieve 150 times */
- ; Line 22
- 0013 C7 46 FC 0001 mov word ptr [bp-4],1
- 0018 EB 41 jmp short @5
- 001A @4:
- ;|*** {
- ; Line 23
- ;|*** count = 0;
- ; Line 24
- 001A C7 46 FE 0000 mov word ptr [bp-2],0
- ;|*** for( i = 0; i <= SIZE; i++) /* set all flags true */
- ; Line 25
- 001F 33 F6 xor si,si
- 0021 EB 06 jmp short @9
- 0023 @8:
- ;|*** flags[i] = TRUE;
- ; Line 26
- 0023 C6 84 0000 R 01 mov byte ptr dgroup:_flags[si],1
- 0028 46 inc si
- 0029 @9:
- 0029 81 FE 1FFE cmp si,8190
-
-
-
- 002D 7E F4 jle @8
- ;|***
- ; Line 27
- ;|*** for( i = 2; i <= SIZE; i++ )
- ; Line 28
- 002F BE 0002 mov si,2
- 0032 EB 1E jmp short @13
- 0034 @12:
- ;|*** {
- ; Line 29
- ;|*** if ( flags[i] ) /* found a prime */
- ; Line 30
- 0034 80 BC 0000 R 00 cmp byte ptr dgroup:_flags[si],0
- 0039 74 16 je @11
- ;|*** {
- ; Line 31
- ;|*** for ( k = i + i; k <= SIZE; k += i )
- ; Line 32
- 003B 8B FE mov di,si
- 003D 03 FE add di,si
- 003F EB 07 jmp short @18
- 0041 @17:
- ;|*** flags[k] = FALSE; /* Cancel its multiples */
- ; Line 33
- 0041 C6 85 0000 R 00 mov byte ptr dgroup:_flags[di],0
- 0046 03 FE add di,si
- 0048 @18:
- 0048 81 FF 1FFE cmp di,8190
- 004C 7E F3 jle @17
- ;|*** count++;
- ; Line 34
- 004E FF 46 FE inc word ptr [bp-2]
- ;|*** }
- ; Line 35
- ;|*** }
- ; Line 36
- Cmerge V1.0 Mon Jun 08 14:31:25 1987 Page 1-3
- 0051 @11:
- 0051 46 inc si
- 0052 @13:
- 0052 81 FE 1FFE cmp si,8190
- 0056 7E DC jle @12
- ;|*** }
- ; Line 37
- 0058 FF 46 FC inc word ptr [bp-4]
- 005B @5:
- 005B 81 7E FC 0096 cmp word ptr [bp-4],150
- 0060 7E B8 jle @4
- ;|***
- ; Line 38
- ;|*** printf ("%d primes\n", count);
- ; Line 39
- 0062 FF 76 FE push word ptr [bp-2]
- 0065 B8 200F R mov ax,offset _s@+16
- 0068 50 push ax
- 0069 E8 0000 E call near ptr _printf
- 006C 83 C4 04 add sp,4
- ;|***
- ; Line 40
- ;|*** exit(0);
- ; Line 41
- 006F 6A db 106 ; push immediate
- 0070 00 db 0
- 0071 E8 0000 E call near ptr _exit
- 0074 44 inc sp
- 0075 44 inc sp
- ;|***
- ; Line 42
- ;|*** }
- ; Line 43
- 0076 C9 leave
- 0077 5F pop di
-
-
-
- 0078 5E pop si
- 0079 C3 ret
- _main endp
- 007A _text ends
- 1FFF _data segment word public 'data'
- 1FFF _s@ label byte
- 1FFF 25 db 37
- 2000 64 db 100
- 2001 20 db 32
- 2002 69 db 105
- 2003 74 db 116
- 2004 65 db 101
- 2005 72 db 114
- 2006 61 db 97
- 2007 74 db 116
- 2008 69 db 105
- 2009 6F db 111
- 200A 6E db 110
- 200B 73 db 115
- 200C 3A db 58
- 200D 20 db 32
- 200E 00 db 0
- Cmerge V1.0 Mon Jun 08 14:31:25 1987 Page 1-4
- 200F 25 db 37
- 2010 64 db 100
- 2011 20 db 32
- 2012 70 db 112
- 2013 72 db 114
- 2014 69 db 105
- 2015 6D db 109
- 2016 65 db 101
- 2017 73 db 115
- 2018 0A db 10
- 2019 00 db 0
- 201A _data ends
- 007A _text segment byte public 'code'
- extrn _exit:near
- extrn _printf:near
- public _main
- 007A _text ends
- end
-
- Symbols-1
-
-
- Segments and Groups:
-
- N a m e Size Align Combine Class
-
- DGROUP . . . . . . . . . . . . . GROUP
- _DATA . . . . . . . . . . . . 201A WORD PUBLIC 'DATA'
- _BSS . . . . . . . . . . . . . 0000 WORD PUBLIC 'BSS'
- _TEXT . . . . . . . . . . . . . 007A BYTE PUBLIC 'CODE'
-
- Symbols:
-
- N a m e Type Value Attr
-
- @11 . . . . . . . . . . . . . . L NEAR 0051 _TEXT
- @12 . . . . . . . . . . . . . . L NEAR 0034 _TEXT
- @13 . . . . . . . . . . . . . . L NEAR 0052 _TEXT
- @17 . . . . . . . . . . . . . . L NEAR 0041 _TEXT
- @18 . . . . . . . . . . . . . . L NEAR 0048 _TEXT
- @4 . . . . . . . . . . . . . . . L NEAR 001A _TEXT
- @5 . . . . . . . . . . . . . . . L NEAR 005B _TEXT
- @8 . . . . . . . . . . . . . . . L NEAR 0023 _TEXT
- @9 . . . . . . . . . . . . . . . L NEAR 0029 _TEXT
- _B@ . . . . . . . . . . . . . . L BYTE 0000 _BSS
- _D@ . . . . . . . . . . . . . . L BYTE 0000 _DATA
- _EXIT . . . . . . . . . . . . . L NEAR 0000 _TEXT External
- _FLAGS . . . . . . . . . . . . . L BYTE 0000 _DATA Global
- _MAIN . . . . . . . . . . . . . N PROC 0000 _TEXT Global Length = 007A
- _PRINTF . . . . . . . . . . . . L NEAR 0000 _TEXT External
- _S@ . . . . . . . . . . . . . . L BYTE 1FFF _DATA
-
-
- 145 Source Lines
- 145 Total Lines
- 44 Symbols
-
- 49228 Bytes symbol space free
-
- 0 Warning Errors
- Cmerge V1.0 Mon Jun 08 14:31:25 1987 Page 1-5
- 0 Severe Errors
-